
#define BUSMQ_MSG_DATA_MAX_LEN 1024*10

/*
类型:BUSMQ_MSG_t
说明:busMq的消息结构体其中
datalen:为消息数据长度
data:为消息内存缓冲区后期需要根据用户需求进行类型强转
*/
typedef struct BUSMQ_MSG_t {
    int datalen;
    char data[BUSMQ_MSG_DATA_MAX_LEN];
}BUSMQ_MSG_t;
/*
BUSMQ_RECIVE_CAMMBACK
busMq接收到数据的回调函数
msg:消息
addr:消息来源地址
*/
typedef void (*BUSMQ_RECIVE_CAMMBACK)(BUSMQ_MSG_t* msg,int addr);
/*
BUSMQ_Control_t
busmq的控制结构体，不需要客户修改操作只需要用户外部开辟变量即可
*/
typedef struct BUSMQ_Control_t {
   int busid;
   int run;
   int addr;
   BUSMQ_RECIVE_CAMMBACK recivecall;
}BUSMQ_Control_t;

/*
BUSMQ_CREATE
说明:
创建一个busmq节点
key_id:busmq的总线ID 不通的总线ID之间无法通信举例子0x1234
control:控制句柄
msg_call:该节点接收到消息之后的回调函数
addr:该节点的地址
main :大于0为主设备，一条总线只有一个主设备。0子设备
主设备子设备，子设备和子设备之间均可互相通信
主设备负责创建总线，销毁需要调用BUSMQ_DESTROY_BUS
子设备使用BUSMQ_DESTROY_NODE即可销毁，总线销毁则所有子设备无法通信
返回值：小于0 失败 大于0 成功

*/
int BUSMQ_CREATE(int key_id,BUSMQ_Control_t *control,BUSMQ_RECIVE_CAMMBACK msg_call,int addr,int main);

/*
BUSMQ_DESTROY_NODE
销毁节点(子设备)
返回值 小于0失败 其他成功
*/
int BUSMQ_DESTROY_NODE(BUSMQ_Control_t* control);
/*
BUSMQ_DESTROY_BUS
销毁总线
返回值 小于0失败 其他成功
*/
int BUSMQ_DESTROY_BUS(BUSMQ_Control_t* control);
/*
BUSMQ_MSG_send
发送消息
control 控制句柄
my_msg  要发送的消息
addr    目标地址
返回值 小于0失败 其他成功
*/
int BUSMQ_MSG_send(BUSMQ_Control_t* control,BUSMQ_MSG_t*my_msg,int addr);
